<!doctype html>



  


<html class="theme-next pisces use-motion" lang="zh-Hans">
<head>
  <meta charset="UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>









<meta http-equiv="Cache-Control" content="no-transform" />
<meta http-equiv="Cache-Control" content="no-siteapp" />















  
  
  <link href="/lib/fancybox/source/jquery.fancybox.css?v=2.1.5" rel="stylesheet" type="text/css" />




  
  
  
  

  
    
    
  

  

  

  

  

  
    
    
    <link href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic&subset=latin,latin-ext" rel="stylesheet" type="text/css">
  






<link href="/lib/font-awesome/css/font-awesome.min.css?v=4.6.2" rel="stylesheet" type="text/css" />

<link href="/css/main.css?v=5.1.1" rel="stylesheet" type="text/css" />


  <meta name="keywords" content="Hexo, NexT" />








  <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico?v=5.1.1" />






<meta name="description" content="正则请编写一段匹配IP地址的正则表达式写出一个正则表达式来判断一个字符串是否是一个数字[0-9]字符串 写一个方法，入一个文件名和一个字符串，统计这个字符串在这个文件中出现的次数。写一个程序找出所有字符串的组合，并检查它们是否是回文串写一个字符串反转函数，输入abcde转换成edcba代码小游戏，倒转句子中的单词将GB2312编码的字符串转换为ISO-8859-1编码的字符串请写一段代码来计算给定">
<meta property="og:type" content="article">
<meta property="og:title" content="技术问答3">
<meta property="og:url" content="http://yoursite.com/2017/07/14/easytalk/技术问答3/index.html">
<meta property="og:site_name" content="Tissan">
<meta property="og:description" content="正则请编写一段匹配IP地址的正则表达式写出一个正则表达式来判断一个字符串是否是一个数字[0-9]字符串 写一个方法，入一个文件名和一个字符串，统计这个字符串在这个文件中出现的次数。写一个程序找出所有字符串的组合，并检查它们是否是回文串写一个字符串反转函数，输入abcde转换成edcba代码小游戏，倒转句子中的单词将GB2312编码的字符串转换为ISO-8859-1编码的字符串请写一段代码来计算给定">
<meta property="og:updated_time" content="2017-12-15T14:21:18.000Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="技术问答3">
<meta name="twitter:description" content="正则请编写一段匹配IP地址的正则表达式写出一个正则表达式来判断一个字符串是否是一个数字[0-9]字符串 写一个方法，入一个文件名和一个字符串，统计这个字符串在这个文件中出现的次数。写一个程序找出所有字符串的组合，并检查它们是否是回文串写一个字符串反转函数，输入abcde转换成edcba代码小游戏，倒转句子中的单词将GB2312编码的字符串转换为ISO-8859-1编码的字符串请写一段代码来计算给定">



<script type="text/javascript" id="hexo.configurations">
  var NexT = window.NexT || {};
  var CONFIG = {
    root: '/',
    scheme: 'Pisces',
    sidebar: {"position":"left","display":"post","offset":12,"offset_float":0,"b2t":false,"scrollpercent":false},
    fancybox: true,
    motion: true,
    duoshuo: {
      userId: 'undefined',
      author: 'Java程序员'
    },
    algolia: {
      applicationID: '',
      apiKey: '',
      indexName: '',
      hits: {"per_page":10},
      labels: {"input_placeholder":"Search for Posts","hits_empty":"We didn't find any results for the search: ${query}","hits_stats":"${hits} results found in ${time} ms"}
    }
  };
</script>



  <link rel="canonical" href="http://yoursite.com/2017/07/14/easytalk/技术问答3/"/>





  <title>技术问答3 | Tissan</title>
  














</head>

<body itemscope itemtype="http://schema.org/WebPage" lang="zh-Hans">

  
  
    
  

  <div class="container sidebar-position-left page-post-detail ">
    <div class="headband"></div>

    <header id="header" class="header" itemscope itemtype="http://schema.org/WPHeader">
      <div class="header-inner"><div class="site-brand-wrapper">
  <div class="site-meta ">
    

    <div class="custom-logo-site-title">
      <a href="/"  class="brand" rel="start">
        <span class="logo-line-before"><i></i></span>
        <span class="site-title">Tissan</span>
        <span class="logo-line-after"><i></i></span>
      </a>
    </div>
      
        <p class="site-subtitle"></p>
      
  </div>

  <div class="site-nav-toggle">
    <button>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
      <span class="btn-bar"></span>
    </button>
  </div>
</div>

<nav class="site-nav">
  

  
    <ul id="menu" class="menu">
      
        
        <li class="menu-item menu-item-home">
          <a href="/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-home"></i> <br />
            
            首页
          </a>
        </li>
      
        
        <li class="menu-item menu-item-categories">
          <a href="/categories/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-th"></i> <br />
            
            分类
          </a>
        </li>
      
        
        <li class="menu-item menu-item-archives">
          <a href="/archives/" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-archive"></i> <br />
            
            归档
          </a>
        </li>
      
        
        <li class="menu-item menu-item-tags">
          <a href="/tags" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-tags"></i> <br />
            
            标签
          </a>
        </li>
      
        
        <li class="menu-item menu-item-about">
          <a href="/about" rel="section">
            
              <i class="menu-item-icon fa fa-fw fa-user"></i> <br />
            
            关于
          </a>
        </li>
      

      
    </ul>
  

  
</nav>



 </div>
    </header>

    <main id="main" class="main">
      <div class="main-inner">
        <div class="content-wrap">
          <div id="content" class="content">
            

  <div id="posts" class="posts-expand">
    

  

  
  
  

  <article class="post post-type-normal " itemscope itemtype="http://schema.org/Article">
    <link itemprop="mainEntityOfPage" href="http://yoursite.com/2017/07/14/easytalk/技术问答3/">

    <span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
      <meta itemprop="name" content="罗天翔">
      <meta itemprop="description" content="">
      <meta itemprop="image" content="/uploads/avatar.jpg">
    </span>

    <span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
      <meta itemprop="name" content="Tissan">
    </span>

    
      <header class="post-header">

        
        
          <h1 class="post-title" itemprop="name headline">技术问答3</h1>
        

        <div class="post-meta">
          <span class="post-time">
            
              <span class="post-meta-item-icon">
                <i class="fa fa-calendar-o"></i>
              </span>
              
                <span class="post-meta-item-text">发表于</span>
              
              <time title="创建于" itemprop="dateCreated datePublished" datetime="2017-07-14T21:12:09+08:00">
                2017-07-14
              </time>
            

            

            
          </span>

          
            <span class="post-category" >
            
              <span class="post-meta-divider">|</span>
            
              <span class="post-meta-item-icon">
                <i class="fa fa-folder-o"></i>
              </span>
              
                <span class="post-meta-item-text">分类于</span>
              
              
                <span itemprop="about" itemscope itemtype="http://schema.org/Thing">
                  <a href="/categories/java/" itemprop="url" rel="index">
                    <span itemprop="name">java</span>
                  </a>
                </span>

                
                
              
            </span>
          

          
            
              <span class="post-comments-count">
              <span class="post-meta-divider">|</span>
              <span class="post-meta-item-icon">
                <i class="fa fa-comment-o"></i>
              </span>
              
                <a href="/2017/07/14/easytalk/技术问答3/#SOHUCS" itemprop="discussionUrl">
                  <span id="changyan_count_unit" class="post-comments-count hc-comment-count" data-xid="2017/07/14/easytalk/技术问答3/" itemprop="commentsCount"></span>
                </a>
              
            
          

          
          

          

          

          

        </div>
      </header>
    

    <div class="post-body" itemprop="articleBody">

      
      

      
        <h4 id="正则"><a href="#正则" class="headerlink" title="正则"></a>正则</h4><p>请编写一段匹配IP地址的正则表达式<br>写出一个正则表达式来判断一个字符串是否是一个数字<br>[0-9]<br>字符串</p>
<p>写一个方法，入一个文件名和一个字符串，统计这个字符串在这个文件中出现的次数。<br>写一个程序找出所有字符串的组合，并检查它们是否是回文串<br>写一个字符串反转函数，输入abcde转换成edcba代码<br>小游戏，倒转句子中的单词<br>将GB2312编码的字符串转换为ISO-8859-1编码的字符串<br>请写一段代码来计算给定文本内字符“A”的个数。分别用迭代和递归两种方式<br>编写一个截取字符串的函数，输入为一个字符串和字节数，输出为按字节截取的字符串。 但是要保证汉字不被截半个，如“我ABC”4，应该截为“我AB”，输入“我ABC汉DEF”，6，应该输出为“我ABC”而不是“我ABC+汉的半个”<br>给定 2 个包含单词列表（每行一个）的文件，编程列出交集<br>打印出一个字符串的所有排列<br>将一个键盘输入的数字转化成中文输出(例如：输入1234567，输出:一百二拾三万四千五百六拾七)<br>在Web应用开发过程中经常遇到输出某种编码的字符，如从 GBK 到 ISO8859-1等，如何输出一个某种编码的字符串<br>日期</p>
<p>计算两个日期之间的差距</p>
<h4 id="反射机制"><a href="#反射机制" class="headerlink" title="反射机制"></a>反射机制</h4><p>(1)反射机制提供了什么功能<br>//通过反射拿到对象的<br>Class clazz = Class.forName(“test.Main”);<br>Main m = (Main)clazz.newInstance();<br>(2)反射是如何实现的<br>堆<br>(3)哪里用到反射机制<br>ioc<br>(4)Class.forName和ClassLoader<br>forName初始化过</p>
<p>(5)获取类的3中方法<br>Class.forName<br>Class.class<br>getClass()</p>
<p>####<br>(1)是否看过框架的一些代码<br>rocketmq源码<br>1.发送消息<br>2.处理消息</p>
<p>(2)持久层设计要考虑的问题有哪些？你用过的持久层框架有哪些<br>mybatis hibernate：把数据持久化到磁盘</p>
<p>(4)你能解释一下里氏替换原则吗<br>任何基类出现的地方，子类一定可以出现</p>
<p>(5)你是如何测试一个应用的？知道哪些测试框架<br>Junit<br>Mockito</p>
<p>传输层常见编程协议有哪些？并说出各自的特点<br>传输层：tcp,udp<br>网络层：ip</p>
<h4 id="http"><a href="#http" class="headerlink" title="http"></a>http</h4><p>1.HTTPS 的加密方式是什么，讲讲整个加密解密流程<br>(1)先握手，将浏览器支持的加密规则发送给网站<br>(2)网站选取加密算法，将自己证书信息发送给浏览器<br>(3)浏览器验证证书的合法性，然后生成一串随机数，用证书中提供的公钥进行加密，发送给网站<br>(4)使用私钥取出密码，并验证hash是否与浏览器发送过来的一致，然后发送一段握手信息给浏览器<br>(5)将所有的通信数据利用之前的密码对称加密算法进行加密<br>HTTPS和HTTP的区别<br>http:传输的数据都是未加密的,于是Netscape设计TLS协议对数据进行加密,<br><a href="https://www.zhihu.com/question/21518760" target="_blank" rel="external">https://www.zhihu.com/question/21518760</a></p>
<p>2.HTTP连接池实现原理<br>HttpConnectionManager连接池管理类</p>
<p>3.HTTP集群方案<br>Nginx、Apache区别<br>nginx:异步非阻塞,低消耗:源于epoll网络io模型<br>apache:阻塞，比nginx的rewrite模块强大:select模型<br>select模型：需要自己不断轮训所有的fd集合<br>epoll模型：使用epoll_wait不断轮训就绪链表，设备就绪时，调用回调函数，把就绪fd放到就绪链表，并唤醒在epoll_wait中进行睡眠的进程，epoll<br>只用判断就绪列表是否为空就行，节省了大量的cpu时间</p>
<p>4.Linux 下 IO 模型有几种，各自的含义是什么。</p>
<ul>
<li>同步:<ul>
<li>同步:</li>
<li>阻塞:</li>
<li>非阻塞</li>
<li>多路复用:</li>
<li>信号驱动</li>
</ul>
</li>
<li>异步:<ul>
<li>异步</li>
</ul>
</li>
</ul>
<p>5.Linux 系统下你关注过哪些内核参数，说说你知道的</p>
<p>6.Linux 下用一行命令查看文件的最后五行<br>tail -n 5 log</p>
<p>7.平时用到哪些 Linux 命令<br>tail less grep mv</p>
<p>8.用一行命令输出正在运行的 Java 进程<br>ps aux | grep java<br>ps当前正在running的进程<br>a所有进程<br>u以用户为分割<br>x不以终端区分<br>e列出每个程序使用的环境变量</p>
<p>9.<br>kill -9 立马停止进程<br>kill -15 等待程序释放资源,多半被阻塞或忽略</p>
<p>10.使用什么命令来确定是否有 Tomcat 实例运行在机器上<br>ps -ef | grep tomcat</p>
<p>11.什么是 N+1 难题</p>
<p>12.什么是 restful，讲讲你理解的 restful<br>REST描述client与server一种交互形式,restful不是关键，关键是RESTful API<br>get(获取) post(新建) put(更新) delete(删除)</p>
<p>13.什么是 paxos 算法<br><a href="https://www.zhihu.com/question/19787937" target="_blank" rel="external">https://www.zhihu.com/question/19787937</a><br>活锁问题：（paxos变种）</p>
<ul>
<li>p1提交proposalN1并且通过prepare;p2也提交一个proposalN2通过prepare,因为n2已经通过，所以p1 commit时被拒绝，所以就提交proposalN3，此时N2&lt;N3，N2又被拒绝</li>
<li>分布式框架为了解决一致性基本上都不是使用原生的paxos算法</li>
<li>zookeeper不是使用paxos协议实现自己的协议而是使用zab一些</li>
</ul>
<p>为了解决paxos算法，zab引入leader概念，并且解决了leader出现单点故障<br>paxos是用leader选举，leader选举必然会出现状态不一致情况<br>zab协议分为4个阶段：选举，(发现，同步)，广播<br>(Phase0)选举阶段：节点一开始都处于选举阶段，只要有一个节点超过半数节点的选举就成为准leader，<br>(Phase1)发现阶段：准leader和followers进行通信，同步followers最近收到的事务提议，<br>(Phase2)同步阶段：follower只会接收zxid比自己的lastZxid大的提议。然后准leader变成leader<br>(Phase3)广播阶段：zookeeper集群这个时候才对外提供服务，如果有新的节点需要对其同步数据</p>
<table>
<thead>
<tr>
<th>zab协议</th>
<th>2PC</th>
</tr>
</thead>
<tbody>
<tr>
<td>半数以上follower回复ack</td>
<td>全部follower回复ack才能通过提议</td>
</tr>
</tbody>
</table>
<p>问题点：<br>(1)如果leader收到半数的回复即通过proposal，其中一个follower因为网络问题一直没有收到proposal后面又收到了会怎么样？<br>首先他不会作为leader，到时候发现同步阶段准leader会同步提议给他<br>(2)所有的follower回复了ack，但是此时leader节点挂掉了<br>zab协议保证两件事情：<br>(1)已经处理过的proposal不能丢弃<br>如果follower1，follower2收到了,然后ACK给leader，leader向所有的follower发送commit，<br>并且commit自身，此时leader挂掉了，但是follower尚未提交，就会出现不一致的情况.<br>a.重新选举leader<br>b.该follower变成准leader，将自己收到的prepare但是尚未提交的proposal提交<br>c.在选举阶段准leader拿到其他follower的所有事务集合，于是准leader根据各个follower的事务执行情况分别建立队列，先发送prepare请求，再发送commit请求，让所有<br>的follower都恢复到与leader一样的状态<br>(2)已经被丢弃的proposal不能被重复处理<br>leader收到请求，包装成proposal，此时网络挂了，导致其他的follower没有收到请求，此时进入崩溃恢复阶段，其他follower选主成功之后，这个leader以follower的<br>身份加入，此时它有一个多余的proposal与其他几点不一致<br><a href="http://www.importnew.com/24519.html" target="_blank" rel="external">http://www.importnew.com/24519.html</a><br><em>问题</em>:<br>新的leader具有已经提交的提议，因此他会让follower同步已提交的协议，丢弃未提交的协议<br>没leader的时候，无法写请求，fast leader election，zxid最大的follower</p>
<p>zab vs paxos:<br>相同点：<br>(1)leader提议给follower<br>(2)leader在commit提议之前会等待followers确认<br>(3)提议包括epoch数字，这和paxos投票表决非常相似<br>不同的点：<br>机器处理了一系列请求，每个请求处理，他都会改变现状并且产生回复，follower当他收到相同的请求，回复相同</p>
<blockquote>
<p>zxid大小能够直接确定，高32+低32位：低32每个proposal自增，没换一次leader高32自增</p>
<p>类似于两段式提交：因为分布式系统中，一个节点无法知道其他节点的操作成败，所以需要协调者<br>参与者将操作成败通知协调者，协调者根据所有参与者反馈情况决定各参与者是否要提交操作还是终止操作</p>
</blockquote>
<p>14.什么是 zab 协议 （zookeeper atomic broadcast）<br>zookeeper原子广播协议，zookeeper客户端会随机连接到zookeeper集群的节点，如果是读直接从当前节点读数据，如果是写<br>那么就会向leader提交事务，leader会广播事务，如果超过半数写入成功，该请求就会被提交<br>(1)如果leader崩溃，数据怎么保证一致性<br>(2)选举leader时，无法处理写请求，如何进行leader选举<br>zab中节点三种状态：<br>following:跟随者服从leader节点命令<br>leading:leader<br>election/looking:节点处于选举状态<br>选举阶段：节点一开始处于选举节点，只要有一个节点超过半数节点投票就是候选leader<br>发现阶段：followers和候选leader进行通信，同步followers最近接收到的事务提议，一个follower只会连接一个leader，f被拒绝后就会选举阶段<br>同步阶段：follower只会接收zxid比自己的lastZxid大的提议<br>广播阶段：zookeeper集群才能正式对外提供事务服务，如果此时有新的节点加入也要同步到新的节点</p>
<h4 id="微服务（MicroServices）与巨石型应用（Monolithic-Applications）之间的区别在哪里"><a href="#微服务（MicroServices）与巨石型应用（Monolithic-Applications）之间的区别在哪里" class="headerlink" title="微服务（MicroServices）与巨石型应用（Monolithic Applications）之间的区别在哪里"></a>微服务（MicroServices）与巨石型应用（Monolithic Applications）之间的区别在哪里</h4><p>微服务:一个大型软件由多个微服务所构成，各个微服务可以独立部署<br>巨石型应用:修改一个地方就要将整个应用全部部署</p>
<h4 id="描述-Cookie-和-Session-的作用，区别和各自的应用范围，Session工作原理"><a href="#描述-Cookie-和-Session-的作用，区别和各自的应用范围，Session工作原理" class="headerlink" title="描述 Cookie 和 Session 的作用，区别和各自的应用范围，Session工作原理"></a>描述 Cookie 和 Session 的作用，区别和各自的应用范围，Session工作原理</h4><h4 id="你常用的持续集成（Continuous-Integration）、静态代码分析（Static-Code-Analysis）工具有哪些"><a href="#你常用的持续集成（Continuous-Integration）、静态代码分析（Static-Code-Analysis）工具有哪些" class="headerlink" title="你常用的持续集成（Continuous Integration）、静态代码分析（Static Code Analysis）工具有哪些"></a>你常用的持续集成（Continuous Integration）、静态代码分析（Static Code Analysis）工具有哪些</h4><p>jenkins：<br>持续、自动地构建/测试软件项目。<br>监控一些定时执行的任务。</p>
<p>静态代码分析 alibaba</p>
<h4 id="简述下数据库正则化（Normalizations）"><a href="#简述下数据库正则化（Normalizations）" class="headerlink" title="简述下数据库正则化（Normalizations）"></a>简述下数据库正则化（Normalizations）</h4><h4 id="KISS-DRY-YAGNI-等原则是什么含义"><a href="#KISS-DRY-YAGNI-等原则是什么含义" class="headerlink" title="KISS,DRY,YAGNI 等原则是什么含义"></a>KISS,DRY,YAGNI 等原则是什么含义</h4><p>DRY:dont repeat yourself:不要总是用相同代码解决相同问题<br>KISS:keep it simple,stupid<br>YAGNI:You Aint Going to Need It</p>
<h4 id="分布式事务的原理，优缺点，如何使用分布式事务？"><a href="#分布式事务的原理，优缺点，如何使用分布式事务？" class="headerlink" title="分布式事务的原理，优缺点，如何使用分布式事务？"></a>分布式事务的原理，优缺点，如何使用分布式事务？</h4><h4 id="分布式集群下如何做到唯一序列号"><a href="#分布式集群下如何做到唯一序列号" class="headerlink" title="分布式集群下如何做到唯一序列号"></a>分布式集群下如何做到唯一序列号</h4><p>(1)redis:自增<br>3台redis<br>1,4,7<br>2,5,8<br>3,6,9<br>(2)mongo:时间+机器+tid+自增</p>
<h4 id="开放问题"><a href="#开放问题" class="headerlink" title="开放问题"></a>开放问题</h4><p>1.Google是如何在一秒内把搜索结果返回给用户<br>ElasticSearch<br>2.哪种依赖注入方式你建议使用，构造器注入，还是 Setter方法注入<br>set方法<br>3.树（二叉或其他）形成许多普通数据结构的基础。请描述一些这样的数据结构以及何时可以使用它们</p>
<p>4.某一项功能如何设计<br>短链：</p>
<p>5.线上系统突然变得异常缓慢，你如何查找问题<br>gc，cpu，数据</p>
<p>6.什么样的项目不适合用框架</p>
<p>7.新浪微博是如何实现把微博推给订阅者</p>
<p>8.简要介绍下从浏览器输入 URL 开始到获取到请求界面之后 Java Web 应用中发生了什么<br>输入url，他会先查看浏览器缓存是否有host缓存，如果没有就像dns服务，获取ip，然后根据ip找到具体的服务器，<br>像服务器发送请求，然后服务器的web，如果有nginx监听了80端口，就会根据nginx的url拦截转发到端口。然后取数据返回</p>
<p>9.高并发下，如何做到安全的修改同一行数据<br>死锁，</p>
<p>10.12306网站的订票系统如何实现，如何保证不会票不被超卖</p>
<p>11.网站性能优化如何优化的</p>
<p>12.聊了下曾经参与设计的服务器架构<br>nginx，多台服务器，redis，mongodb（分布式数据库）,zookeeper，mysql</p>
<p>13.请思考一个方案，实现分布式环境下的 countDownLatch</p>
<p>14.请思考一个方案，设计一个可以控制缓存总体大小的自动适应的本地缓存</p>
<p>15.在你的职业生涯中，算得上最困难的技术挑战是什么</p>
<p>如何写一篇设计文档，目录是什么<br>大写的O是什么？举几个例子<br>编程中自己都怎么考虑一些设计原则的，比如开闭原则，以及在工作中的应用<br>解释一下网络应用的模式及其特点<br>设计一个在线文档系统，文档可以被编辑，如何防止多人同时对同一份文档进行编辑更新</p>
<p>说出数据连接池的工作机制是什么<br>怎么获取一个文件中单词出现的最高频率<br>描述一下你最常用的编程风格<br>如果有机会重新设计你们的产品，你会怎么做</p>
<p>如何搭建一个高可用系统</p>
<p>如何启动时不需输入用户名与密码<br>如何在基于Java的Web项目中实现文件上传和下载<br>如何实现一个秒杀系统，保证只有几位用户能买到某件商品。<br>如何实现负载均衡，有哪些算法可以实现<br>轮询，hash，随机</p>
<p>如何设计一个购物车？想想淘宝的购物车如何实现的</p>
<p>如何设计一套高并发支付方案，架构如何设计</p>
<h4 id="如何设计建立和保持-100w-的长连接"><a href="#如何设计建立和保持-100w-的长连接" class="headerlink" title="如何设计建立和保持 100w 的长连接"></a>如何设计建立和保持 100w 的长连接</h4><p>关注链接数而不是qps，消息推送系统，聊天室和即时推送系统。<br>这样的长连接往往是没有数据发送的，并不占用cpu和系统资源，只占用内存<br><a href="https://www.dozer.cc/2014/12/netty-long-connection.html" target="_blank" rel="external">https://www.dozer.cc/2014/12/netty-long-connection.html</a><br>NIO还是netty都是非阻塞IO，不为每个连接都创建一个线程</p>
<h4 id="如何避免浏览器缓存。"><a href="#如何避免浏览器缓存。" class="headerlink" title="如何避免浏览器缓存。"></a>如何避免浏览器缓存。</h4><h4 id="如何防止缓存雪崩"><a href="#如何防止缓存雪崩" class="headerlink" title="如何防止缓存雪崩"></a>如何防止缓存雪崩</h4><p>大量的缓存在同一时间失效，新的缓存没有接上</p>
<h4 id="如果AB两个系统互相依赖，如何解除依"><a href="#如果AB两个系统互相依赖，如何解除依" class="headerlink" title="如果AB两个系统互相依赖，如何解除依"></a>如果AB两个系统互相依赖，如何解除依</h4><h4 id="如果有人恶意创建非法连接，怎么解决"><a href="#如果有人恶意创建非法连接，怎么解决" class="headerlink" title="如果有人恶意创建非法连接，怎么解决"></a>如果有人恶意创建非法连接，怎么解决</h4><p>1.短链功能：<br>2.sql注入链接：拼接语句的方法<br>PASSWORD = ‘guess’而攻击者就可以尝试修改 SQL 语句使其变为：<br>PASSWORD = ‘xxxx’or ‘a’ = ‘a’<br>sqlmap开源项目</p>
<p>短链功能：最常访问的短链放在redis，DDOS攻击</p>
<h4 id="如果有几十亿的白名单，每天白天需要高并发查询，晚上需要更新一次，如何设计这个功能"><a href="#如果有几十亿的白名单，每天白天需要高并发查询，晚上需要更新一次，如何设计这个功能" class="headerlink" title="如果有几十亿的白名单，每天白天需要高并发查询，晚上需要更新一次，如何设计这个功能"></a>如果有几十亿的白名单，每天白天需要高并发查询，晚上需要更新一次，如何设计这个功能</h4><p>1.</p>
<h4 id="如果系统要使用超大整数（超过long长度范围），请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算）"><a href="#如果系统要使用超大整数（超过long长度范围），请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算）" class="headerlink" title="如果系统要使用超大整数（超过long长度范围），请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算）"></a>如果系统要使用超大整数（超过long长度范围），请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算）</h4><h4 id="如果让你实现一个并发安全的链表，你会怎么做"><a href="#如果让你实现一个并发安全的链表，你会怎么做" class="headerlink" title="如果让你实现一个并发安全的链表，你会怎么做"></a>如果让你实现一个并发安全的链表，你会怎么做</h4><h4 id="应用服务器与WEB-服务器的区别？应用服务器怎么监控性能，各种方式的区别？你使用过的应用服务器优化技术有哪些"><a href="#应用服务器与WEB-服务器的区别？应用服务器怎么监控性能，各种方式的区别？你使用过的应用服务器优化技术有哪些" class="headerlink" title="应用服务器与WEB 服务器的区别？应用服务器怎么监控性能，各种方式的区别？你使用过的应用服务器优化技术有哪些"></a>应用服务器与WEB 服务器的区别？应用服务器怎么监控性能，各种方式的区别？你使用过的应用服务器优化技术有哪些</h4><p>大型网站在架构上应当考虑哪些问题<br>zabbix:内存，cpu，qps</p>
<h4 id="有没有处理过线上问题？出现内存泄露，CPU利用率标高，应用无响应时如何处理的"><a href="#有没有处理过线上问题？出现内存泄露，CPU利用率标高，应用无响应时如何处理的" class="headerlink" title="有没有处理过线上问题？出现内存泄露，CPU利用率标高，应用无响应时如何处理的"></a>有没有处理过线上问题？出现内存泄露，CPU利用率标高，应用无响应时如何处理的</h4><p>内存泄漏：可以prof文件下载下来，看堆中size比较大的数据，看里面的数据，mat成员变量引用到了堆中没有使用的对象<br>cpu率高：死循环</p>
<h4 id="最近看什么书，印象最深刻的是什么"><a href="#最近看什么书，印象最深刻的是什么" class="headerlink" title="最近看什么书，印象最深刻的是什么"></a>最近看什么书，印象最深刻的是什么</h4><p>zookeeper</p>
<h4 id="描述下常用的重构技巧"><a href="#描述下常用的重构技巧" class="headerlink" title="描述下常用的重构技巧"></a>描述下常用的重构技巧</h4><p>你有了解过存在哪些反模式（Anti-Patterns）吗</p>
<h4 id="如何分析Thread-dump"><a href="#如何分析Thread-dump" class="headerlink" title="如何分析Thread dump"></a>如何分析Thread dump</h4><p>jstack</p>
<h4 id="你是如何处理内存泄露或者栈溢出问题的"><a href="#你是如何处理内存泄露或者栈溢出问题的" class="headerlink" title="你是如何处理内存泄露或者栈溢出问题的"></a>你是如何处理内存泄露或者栈溢出问题的</h4><p>栈溢出：递归<br>内存泄漏：<br><figure class="highlight java"><figcaption><span>只在method1中用，但是由于一直有引用所有没有gc</span></figcaption><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line">Object object;</div><div class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">method1</span><span class="params">()</span></span>&#123;</div><div class="line">     object = <span class="keyword">new</span> Object();</div><div class="line">     <span class="comment">//...其他代码</span></div><div class="line">&#125;</div></pre></td></tr></table></figure></p>
<p>你们线上应用的 JVM 参数有哪些<br>-Xms512m -Xmx3456m    堆内存<br>-XX:MaxPermSize=256m  非堆内存(永久代)PermGen<br>-XX:+UseConcMarkSweepGC  CMS<br>-XX:+PrintGCDetails -XX:+PrintGCTimeStamps<br>-XX:+HeapDumpOnOutOfMemoryError</p>
<p>怎么提升系统的QPS和吞吐量<br>qps,并发区别<br>缓存:读完数据去处理业务，但是再次过来取的话需要从文件中读取，很慢<br>如果缓存的话，已经帮你读好放到内存中</p>
<h4 id="JAVA访问数据库，从数据库连接池开始到数据库返回结果，都发生了哪些事情"><a href="#JAVA访问数据库，从数据库连接池开始到数据库返回结果，都发生了哪些事情" class="headerlink" title="JAVA访问数据库，从数据库连接池开始到数据库返回结果，都发生了哪些事情"></a>JAVA访问数据库，从数据库连接池开始到数据库返回结果，都发生了哪些事情</h4><p>JDBC driver和mysql数据库建立TCP链接之后，将对象放入池中，当需要操作数据库的时候，取出连接发送sql到mysql<br>mysql解析语法，查询优化，返回连接对象重新放入池子中</p>
<h4 id="GC调优"><a href="#GC调优" class="headerlink" title="GC调优"></a>GC调优</h4><p>1.gc监控：是否正在有效的高效的gc<br>(1)jvm何时执行gc过程：何时一个新生代对象移动到老年代<br>(2)stop-the-world：何时发生了，持续了多久时间<br>2.-verbosegc  执行gc前后新生代，老年代空间大小，gc执行时间，gc日志<br>3.jstat参数<br>S0C: from总共<br>S1C: to公共<br>S0U:from使用的<br>S0U:to使用的</p>
<p>M:新生代<br>PC:<br>PU:<br>YGC:<br>Meta<br>Ccsu<br>Ygc young gc发生次数<br>Ygct:young gc消耗时间<br>Fgc  发生次数</p>

      
    </div>

    <div>
      
        

      
    </div>

    <div>
      
        
  <div style="padding: 10px 0; margin: 20px auto; width: 90%; text-align: center;">
    <div>坚持原创技术分享，您的支持将鼓励我继续创作！</div>
    <button id="rewardButton" disable="enable" onclick="var qr = document.getElementById('QR'); if (qr.style.display === 'none') {qr.style.display='block';} else {qr.style.display='none'}">
      <span>赏</span>
    </button>
    <div id="QR" style="display: none;">
      
        <div id="wechat" style="display: inline-block">
          <img id="wechat_qr" src="/uploads/wechat.png" alt="罗天翔 WeChat Pay"/>
          <p>微信打赏</p>
        </div>
      
      
        <div id="alipay" style="display: inline-block">
          <img id="alipay_qr" src="/uploads/ali.jpg" alt="罗天翔 Alipay"/>
          <p>支付宝打赏</p>
        </div>
      
    </div>
  </div>


      
    </div>

    <div>
      
        

      
    </div>

    <footer class="post-footer">
      

      
      
      

      
        <div class="post-nav">
          <div class="post-nav-next post-nav-item">
            
              <a href="/2017/07/14/easytalk/技术问答2/" rel="next" title="技术问答2">
                <i class="fa fa-chevron-left"></i> 技术问答2
              </a>
            
          </div>

          <span class="post-nav-divider"></span>

          <div class="post-nav-prev post-nav-item">
            
              <a href="/2017/07/14/rocketmq/Producer发送消息/" rel="prev" title="Producer发送消息">
                Producer发送消息 <i class="fa fa-chevron-right"></i>
              </a>
            
          </div>
        </div>
      

      
      
    </footer>
  </article>



    <div class="post-spread">
      
    </div>
  </div>


          </div>
          


          
  <div class="comments" id="comments">
    
      <div id="SOHUCS"></div>
    
  </div>


        </div>
        
          
  
  <div class="sidebar-toggle">
    <div class="sidebar-toggle-line-wrap">
      <span class="sidebar-toggle-line sidebar-toggle-line-first"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-middle"></span>
      <span class="sidebar-toggle-line sidebar-toggle-line-last"></span>
    </div>
  </div>

  <aside id="sidebar" class="sidebar">
    <div class="sidebar-inner">

      

      
        <ul class="sidebar-nav motion-element">
          <li class="sidebar-nav-toc sidebar-nav-active" data-target="post-toc-wrap" >
            文章目录
          </li>
          <li class="sidebar-nav-overview" data-target="site-overview">
            站点概览
          </li>
        </ul>
      

      <section class="site-overview sidebar-panel">
        <div class="site-author motion-element" itemprop="author" itemscope itemtype="http://schema.org/Person">
          <img class="site-author-image" itemprop="image"
               src="/uploads/avatar.jpg"
               alt="罗天翔" />
          <p class="site-author-name" itemprop="name">罗天翔</p>
           
              <p class="site-description motion-element" itemprop="description">一次就把事情做对.</p>
          
        </div>
        <nav class="site-state motion-element">

          
            <div class="site-state-item site-state-posts">
              <a href="/archives/">
                <span class="site-state-item-count">69</span>
                <span class="site-state-item-name">日志</span>
              </a>
            </div>
          

          
            
            
            <div class="site-state-item site-state-categories">
              <a href="/categories/index.html">
                <span class="site-state-item-count">13</span>
                <span class="site-state-item-name">分类</span>
              </a>
            </div>
          

          

        </nav>

        

        <div class="links-of-author motion-element">
          
            
              <span class="links-of-author-item">
                <a href="https://github.com/louiegit/" target="_blank" title="GitHub">
                  
                    <i class="fa fa-fw fa-github"></i>
                  
                  GitHub
                </a>
              </span>
            
              <span class="links-of-author-item">
                <a href="" target="_blank" title="微信">
                  
                    <i class="fa fa-fw fa-wechat"></i>
                  
                  微信
                </a>
              </span>
            
          
        </div>

        
        

        
        

        


      </section>

      
      <!--noindex-->
        <section class="post-toc-wrap motion-element sidebar-panel sidebar-panel-active">
          <div class="post-toc">

            
              
            

            
              <div class="post-toc-content"><ol class="nav"><li class="nav-item nav-level-4"><a class="nav-link" href="#正则"><span class="nav-number">1.</span> <span class="nav-text">正则</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#反射机制"><span class="nav-number">2.</span> <span class="nav-text">反射机制</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#http"><span class="nav-number">3.</span> <span class="nav-text">http</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#微服务（MicroServices）与巨石型应用（Monolithic-Applications）之间的区别在哪里"><span class="nav-number">4.</span> <span class="nav-text">微服务（MicroServices）与巨石型应用（Monolithic Applications）之间的区别在哪里</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#描述-Cookie-和-Session-的作用，区别和各自的应用范围，Session工作原理"><span class="nav-number">5.</span> <span class="nav-text">描述 Cookie 和 Session 的作用，区别和各自的应用范围，Session工作原理</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#你常用的持续集成（Continuous-Integration）、静态代码分析（Static-Code-Analysis）工具有哪些"><span class="nav-number">6.</span> <span class="nav-text">你常用的持续集成（Continuous Integration）、静态代码分析（Static Code Analysis）工具有哪些</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#简述下数据库正则化（Normalizations）"><span class="nav-number">7.</span> <span class="nav-text">简述下数据库正则化（Normalizations）</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#KISS-DRY-YAGNI-等原则是什么含义"><span class="nav-number">8.</span> <span class="nav-text">KISS,DRY,YAGNI 等原则是什么含义</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#分布式事务的原理，优缺点，如何使用分布式事务？"><span class="nav-number">9.</span> <span class="nav-text">分布式事务的原理，优缺点，如何使用分布式事务？</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#分布式集群下如何做到唯一序列号"><span class="nav-number">10.</span> <span class="nav-text">分布式集群下如何做到唯一序列号</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#开放问题"><span class="nav-number">11.</span> <span class="nav-text">开放问题</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#如何设计建立和保持-100w-的长连接"><span class="nav-number">12.</span> <span class="nav-text">如何设计建立和保持 100w 的长连接</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#如何避免浏览器缓存。"><span class="nav-number">13.</span> <span class="nav-text">如何避免浏览器缓存。</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#如何防止缓存雪崩"><span class="nav-number">14.</span> <span class="nav-text">如何防止缓存雪崩</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#如果AB两个系统互相依赖，如何解除依"><span class="nav-number">15.</span> <span class="nav-text">如果AB两个系统互相依赖，如何解除依</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#如果有人恶意创建非法连接，怎么解决"><span class="nav-number">16.</span> <span class="nav-text">如果有人恶意创建非法连接，怎么解决</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#如果有几十亿的白名单，每天白天需要高并发查询，晚上需要更新一次，如何设计这个功能"><span class="nav-number">17.</span> <span class="nav-text">如果有几十亿的白名单，每天白天需要高并发查询，晚上需要更新一次，如何设计这个功能</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#如果系统要使用超大整数（超过long长度范围），请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算）"><span class="nav-number">18.</span> <span class="nav-text">如果系统要使用超大整数（超过long长度范围），请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算）</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#如果让你实现一个并发安全的链表，你会怎么做"><span class="nav-number">19.</span> <span class="nav-text">如果让你实现一个并发安全的链表，你会怎么做</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#应用服务器与WEB-服务器的区别？应用服务器怎么监控性能，各种方式的区别？你使用过的应用服务器优化技术有哪些"><span class="nav-number">20.</span> <span class="nav-text">应用服务器与WEB 服务器的区别？应用服务器怎么监控性能，各种方式的区别？你使用过的应用服务器优化技术有哪些</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#有没有处理过线上问题？出现内存泄露，CPU利用率标高，应用无响应时如何处理的"><span class="nav-number">21.</span> <span class="nav-text">有没有处理过线上问题？出现内存泄露，CPU利用率标高，应用无响应时如何处理的</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#最近看什么书，印象最深刻的是什么"><span class="nav-number">22.</span> <span class="nav-text">最近看什么书，印象最深刻的是什么</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#描述下常用的重构技巧"><span class="nav-number">23.</span> <span class="nav-text">描述下常用的重构技巧</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#如何分析Thread-dump"><span class="nav-number">24.</span> <span class="nav-text">如何分析Thread dump</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#你是如何处理内存泄露或者栈溢出问题的"><span class="nav-number">25.</span> <span class="nav-text">你是如何处理内存泄露或者栈溢出问题的</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#JAVA访问数据库，从数据库连接池开始到数据库返回结果，都发生了哪些事情"><span class="nav-number">26.</span> <span class="nav-text">JAVA访问数据库，从数据库连接池开始到数据库返回结果，都发生了哪些事情</span></a></li><li class="nav-item nav-level-4"><a class="nav-link" href="#GC调优"><span class="nav-number">27.</span> <span class="nav-text">GC调优</span></a></li></ol></div>
            

          </div>
        </section>
      <!--/noindex-->
      

      

    </div>
  </aside>


        
      </div>
    </main>

    <footer id="footer" class="footer">
      <div class="footer-inner">
        <div class="copyright" >
  
  &copy; 
  <span itemprop="copyrightYear">2017</span>
  <span class="with-love">
    <i class="fa fa-heart"></i>
  </span>
  <span class="author" itemprop="copyrightHolder">罗天翔</span>
</div>


<div class="powered-by">
  NBA & Code. What?
</div>

<div class="theme-info">
  主题 -
  <a class="theme-link" href="https://github.com/iissnan/hexo-theme-next">
    NexT.Pisces
  </a>
</div>


        

        
      </div>
    </footer>

    
      <div class="back-to-top">
        <i class="fa fa-arrow-up"></i>
        
      </div>
    

  </div>

  

<script type="text/javascript">
  if (Object.prototype.toString.call(window.Promise) !== '[object Function]') {
    window.Promise = null;
  }
</script>









  












  
  <script type="text/javascript" src="/lib/jquery/index.js?v=2.1.3"></script>

  
  <script type="text/javascript" src="/lib/fastclick/lib/fastclick.min.js?v=1.0.6"></script>

  
  <script type="text/javascript" src="/lib/jquery_lazyload/jquery.lazyload.js?v=1.9.7"></script>

  
  <script type="text/javascript" src="/lib/velocity/velocity.min.js?v=1.2.1"></script>

  
  <script type="text/javascript" src="/lib/velocity/velocity.ui.min.js?v=1.2.1"></script>

  
  <script type="text/javascript" src="/lib/fancybox/source/jquery.fancybox.pack.js?v=2.1.5"></script>


  


  <script type="text/javascript" src="/js/src/utils.js?v=5.1.1"></script>

  <script type="text/javascript" src="/js/src/motion.js?v=5.1.1"></script>



  
  


  <script type="text/javascript" src="/js/src/affix.js?v=5.1.1"></script>

  <script type="text/javascript" src="/js/src/schemes/pisces.js?v=5.1.1"></script>



  
  <script type="text/javascript" src="/js/src/scrollspy.js?v=5.1.1"></script>
<script type="text/javascript" src="/js/src/post-details.js?v=5.1.1"></script>



  


  <script type="text/javascript" src="/js/src/bootstrap.js?v=5.1.1"></script>



  


  




	





  





  





  




  
    <script type="text/javascript">
    (function(){
      var appid = 'cyt9ceIwz';
      var conf = 'c6226e2bfb7e9c65efc235736edc5074';
      var width = window.innerWidth || document.documentElement.clientWidth;
      if (width < 960) {
      window.document.write('<script id="changyan_mobile_js" charset="utf-8" type="text/javascript" src="https://changyan.sohu.com/upload/mobile/wap-js/changyan_mobile.js?client_id=' + appid + '&conf=' + conf + '"><\/script>'); } else { var loadJs=function(d,a){var c=document.getElementsByTagName("head")[0]||document.head||document.documentElement;var b=document.createElement("script");b.setAttribute("type","text/javascript");b.setAttribute("charset","UTF-8");b.setAttribute("src",d);if(typeof a==="function"){if(window.attachEvent){b.onreadystatechange=function(){var e=b.readyState;if(e==="loaded"||e==="complete"){b.onreadystatechange=null;a()}}}else{b.onload=a}}c.appendChild(b)};loadJs("https://changyan.sohu.com/upload/changyan.js",function(){
        window.changyan.api.config({appid:appid,conf:conf})});
      }
    })();
    </script>
    <script type="text/javascript" src="https://assets.changyan.sohu.com/upload/plugins/plugins.count.js"></script>
  




  





  

  

  

  

  

  

</body>
</html>
